const Mock = require('Mockjs')

const data1 = Mock.mock({
  'items|15': [{
    id: '@id',
    title: '@sentence(1, 20)',
    'status|1': ['published', 'draft', 'deleted'],
    author: 'name',
    goodsImg:"@image",
    display_time: '@datetime',
    pageviews: '@integer(300, 5000)'
  }]
})

const myData1 = Mock.mock({
  //名|规则 :属性值
  'items|5': [{
    // 属性 list 的值是一个数组，其中含有 1 ~ 10 个元素
    'list|1-10': [{
      // 属性 id 是一个自增数，起始值为 1，每次增 1
      'id|+1': 1
    }]
  }]
})


// console.log(data1)
console.log('------')
console.log(JSON.stringify(myData1, null, 4))
/*
    生成规则 有 7 种格式：
    'name|min-max': value
    'name|count': value
    'name|min-max.dmin-dmax': value
    'name|min-max.dcount': value
    'name|count.dmin-dmax': value
    'name|count.dcount': value
    'name|+step': value
    生成规则 的 含义 需要依赖 属性值的类型 才能确定。
    属性值 中可以含有 @占位符。
    属性值 还指定了最终值的初始值和类型。
 */


const myData2 = Mock.mock({
  'memberList|4': [{
  // Number，自增1，初始值为1
  'id|+1': 1,
  // String，随机生成1-3个重复'tcc'
  'name|1-5': '☆',
  // String，生成11个1
  'phone|11':'1',

  //生成一个1-100的浮点数 保留1-3位小数
  'number1|1-100.1-3': 111,
  //生成一个0-100的的整数
  'number2|0-100': 1,
  //生成某个定值数
  'number3|123': 1,
  //每次 生成都会加10
  'number5|+10': 100,
  //重复生成一个字符串多少次  "myString":"wfwfwf"
  'myString|3':'wf',

  // Boolean生成方法，生成true或false的概率都是1/2。
  'status|1': true,
  // Boolean，生成true的概率是2/(2+4)，生成false的概率是4/(2+4)
  'open|2-4': true,

}]

})
// console.log(JSON.stringify(myData2, null,3))

//对象生成
const obj = Mock.mock({
  //1-4指的是这个[里面对象的数量可能是1-4个]
  'memberList|1-4': [{
    'id|+1': 1, // Number，自增1，初识值为1
    'name|1-3': 'tcc', // String，随机生成1-3个重复'tcc'
    'phone|11': 1, // String，生成11个1
    'age|1-120': 20, // Nmuber，随机生成1-120之间的数字
    'salary|6000-10000.1-3': 1, // Number，随机生成6000-10000的1-3位小数的数字
    'status|1': true, // Boolean，生成true或false的概率都是1/2。
    'open|2-4': true, // Boolean，生成true的概率是2/(2+4)，生成false的概率是4/(2+4)
    // 在下面定义的对象中随机抽取2个属性进行返回
    'order|2': {
      id: 1,
      name: '订单1',
      price: 999
    },
    // 在下面定义的对象中随机抽取1-3个属性进行返回
    'order2|1-3': {
      id: 2,
      name: '订单2',
      price: 9999
    },
    // 随机生成15位或者18位的身份证号码
    'idCard': /\d{15}|\d{18}/,
    'phoneNumber':/^[1]([3-9])[0-9]{9}$/,
    //数据占位符
    'name2': '@string',
    'price2': '@float',
    'status2': '@boolean',
    'birthday': '@date', // 默认 yyyy-MM-dd
    'entryDate': '@date("yyyy/mm/dd")', // 指定日期格式 yyyy/MM/dd
    'createDate': '@datetime', // // 默认 yyyy-MM-dd HH:mm:ss
    'updateDate': '@datetime("yyyy/mm/dd HH:mm:ss")', // 指定格式为 yyyy/MM/dd HH:mm:ss
    'pic': '@image', //图像占位符
    'title': '@ctitle(3, 6)', // 中文标题(3到6个字)
    'content': '@csentence(8, 12)', // 一段中文文本(8到12个字)
    //first 英文名    last 应为姓   name 英文姓名   cfirst 中文名   clast 中文姓  cname 中文姓名
    'first': '@first',
    'last': '@last',
    'cname': '@cname',
    //生成url地址 域名 IP地址  email地址
    'url': '@url("https", "api.staryjie.com")',
    'domain': '@domain',
    'ip': '@ip',
    'email': '@email',
    //region 区域。如：华南 华中。county(true) 省市县。zip 邮政编码。
    'area': '@region',
    'address': '@county(true)',
    'zipcode': '@zip',
    //生成随机颜色16进制
    'color':'@color',
    //三选一
    'condition|1': ['A', 'B', 'C'],
  }]
})
console.log(JSON.stringify(obj, null, 2))
/*
      数据的占位符
      Basic:	boolean , natural （自然数，大于等于 0 的整数）, integer , float ,
              character , string , range （整型数组）
      Date:	date （年月日）, time （时分秒）, datetime （年月日时分秒）
      Image:	image, dataImage
      Color:	color
      Text:	paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle
      Name:	first, last, name, cfirst, clast, cname
      Web:	url, domain, email, ip, tld
      Address:	area, region
      Miscellaneous:	guid, id
 */

//编程式  生成某一类的随机数据 ★★★★★
var a = Mock.Random.email()
console.log(a)
